{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "# Feature Engineering in Keras.\n",
    "\n",
    "This is a continuation of our [first Keras models](../../03_keras/solution/keras_dnn.ipynb) we created earlier but now with more feature engineering.\n",
    "\n",
    "### Learning objectives\n",
    "1. Use tf.data to read the CSV files\n",
    "2. Apply feature engineering techniques to transform the input data\n",
    "3. Create new feature columns for better predictive power\n",
    "4. Build, train, and evaluate a new Keras DNN\n",
    "5. Make example predictions\n",
    "6. Export the model in preparation for serving later \n",
    "\n",
    "Each learning objective will correspond to a __#TODO__ in the [student lab notebook](../labs/taxifare_fc.ipynb) -- try to complete that notebook first before reviewing this solution notebook.\n",
    "\n",
    "Let's start off with the Python imports that we need."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "%%bash\n",
    "export PROJECT=$(gcloud config list project --format \"value(core.project)\")\n",
    "echo \"Your current GCP Project Name is: \"$PROJECT"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2.0.0-beta1\n"
     ]
    }
   ],
   "source": [
    "import os, json, math, shutil\n",
    "import datetime\n",
    "import numpy as np\n",
    "import logging\n",
    "# SET TF ERROR LOG VERBOSITY\n",
    "logging.getLogger(\"tensorflow\").setLevel(logging.ERROR)\n",
    "import tensorflow as tf\n",
    "print(tf.version.VERSION)\n",
    "\n",
    "PROJECT = \"your-gcp-project-here\" # REPLACE WITH YOUR PROJECT NAME\n",
    "REGION = \"us-central1\" # REPLACE WITH YOUR BUCKET REGION e.g. us-central1\n",
    "\n",
    "# Do not change these\n",
    "os.environ[\"PROJECT\"] = PROJECT\n",
    "os.environ[\"REGION\"] = REGION\n",
    "os.environ[\"BUCKET\"] = PROJECT # DEFAULT BUCKET WILL BE PROJECT ID\n",
    "\n",
    "if PROJECT == \"your-gcp-project-here\":\n",
    "  print(\"Don't forget to update your PROJECT name! Currently:\", PROJECT)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Create a new Google Cloud Storage Bucket for ML model exports"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Creating a new GCS bucket.\n",
      "\n",
      "Here are your current buckets:\n",
      "gs://qwiklabs-gcp-bdc77450c97b4bf6/\n",
      "gs://qwiklabs-gcp-bdc77450c97b4bf6-idle-bucket/\n",
      "gs://qwiklabs-gcp-bdc77450c97b4bf6-ml/\n",
      "gs://qwiklabs-gcp-bdc77450c97b4bf6-serving-bucket/\n",
      "gs://qwiklabs-gcp-bdc77450c97b4bf6.appspot.com/\n",
      "gs://staging.qwiklabs-gcp-bdc77450c97b4bf6.appspot.com/\n",
      "gs://your-gcp-project-here/\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Creating gs://qwiklabs-gcp-bdc77450c97b4bf6-ml/...\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "    \n",
    "## Create new ML GCS bucket if it doesn't exist already...\n",
    "exists=$(gsutil ls -d | grep -w gs://${PROJECT}-ml/)\n",
    "\n",
    "if [ -n \"$exists\" ]; then\n",
    "   echo -e \"Bucket exists, let's not recreate it.\"\n",
    "    \n",
    "else\n",
    "   echo \"Creating a new GCS bucket.\"\n",
    "   gsutil mb -l ${REGION} gs://${PROJECT}-ml\n",
    "   echo -e \"\\nHere are your current buckets:\"\n",
    "   gsutil ls\n",
    "fi"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Setup parameters for notebook scheduling"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "tags": [
     "parameters"
    ]
   },
   "outputs": [],
   "source": [
    "# Note that this cell is special. It's got a tag (you can view tags by clicking on the wrench icon on the left menu in Jupyter)\n",
    "# These are parameters that we will configure so that we can schedule this notebook\n",
    "DATADIR = '../../data'\n",
    "OUTDIR = './trained_model'\n",
    "NBUCKETS = 10  # for feature crossing\n",
    "TRAIN_BATCH_SIZE = 32\n",
    "NUM_TRAIN_EXAMPLES = 10000 * 5 # remember the training dataset repeats, so this will wrap around\n",
    "NUM_EVALS = 5  # evaluate this many times\n",
    "NUM_EVAL_EXAMPLES = 10000 # enough to get a reasonable sample, but no so much that it slows down"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Locating the CSV files\n",
    "\n",
    "We will start with the CSV files that we wrote out in the [first notebook](../01_explore/solution/taxifare.iypnb) of this sequence. Just so you don't have to run the notebook, we saved a copy in ../data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "tags": [
     "display"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "-rw-r--r-- 1 jupyter jupyter 123590 Sep 12 16:33 ../../data/taxi-test.csv\n",
      "-rw-r--r-- 1 jupyter jupyter 579055 Sep 12 16:33 ../../data/taxi-train.csv\n",
      "-rw-r--r-- 1 jupyter jupyter 123114 Sep 12 16:33 ../../data/taxi-valid.csv\n"
     ]
    }
   ],
   "source": [
    "if DATADIR[:5] == 'gs://':\n",
    "    !gsutil ls $DATADIR/*.csv\n",
    "else:\n",
    "    !ls -l $DATADIR/*.csv"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Use tf.data to read the CSV files\n",
    "\n",
    "We wrote these cells in the [third notebook](../03_tfdata/solution/input_pipeline.ipynb) of this sequence."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "CSV_COLUMNS  = ['fare_amount',  'pickup_datetime',\n",
    "                'pickup_longitude', 'pickup_latitude', \n",
    "                'dropoff_longitude', 'dropoff_latitude', \n",
    "                'passenger_count', 'key']\n",
    "LABEL_COLUMN = 'fare_amount'\n",
    "DEFAULTS     = [[0.0],['na'],[0.0],[0.0],[0.0],[0.0],[0.0],['na']]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "def features_and_labels(row_data):\n",
    "    for unwanted_col in ['key']:  # keep the pickup_datetime!\n",
    "        row_data.pop(unwanted_col)\n",
    "    label = row_data.pop(LABEL_COLUMN)\n",
    "    return row_data, label  # features, label\n",
    "\n",
    "# load the training data\n",
    "def load_dataset(pattern, batch_size=1, mode=tf.estimator.ModeKeys.EVAL):\n",
    "    pattern = '{}/{}'.format(DATADIR, pattern)\n",
    "    dataset = (tf.data.experimental.make_csv_dataset(pattern, batch_size, CSV_COLUMNS, DEFAULTS)\n",
    "               .map(features_and_labels) # features, label\n",
    "               )\n",
    "    if mode == tf.estimator.ModeKeys.TRAIN:\n",
    "        print(\"Repeating training dataset indefinitely\")\n",
    "        dataset = dataset.shuffle(1000).repeat()\n",
    "    dataset = dataset.prefetch(1) # take advantage of multi-threading; 1=AUTOTUNE\n",
    "    return dataset"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [],
   "source": [
    "def parse_datetime(s):\n",
    "    if type(s) is not str:\n",
    "        s = s.numpy().decode('utf-8') # if it is a Tensor\n",
    "    return datetime.datetime.strptime(s, \"%Y-%m-%d %H:%M:%S %Z\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "tags": [
     "display"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "2012-07-05 14:18:00 UTC\n",
      "3\n",
      "Wed\n",
      "3\n",
      "Wed\n"
     ]
    }
   ],
   "source": [
    "for s in ['2012-07-05 14:18:00 UTC']:\n",
    "    print(s)\n",
    "    for ts in [parse_datetime(s), parse_datetime(tf.constant(s))]: # as string, as tensor\n",
    "        print(ts.weekday())\n",
    "        DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n",
    "        print(DAYS[ts.weekday()])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Add data transformations and build the new DNN"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "['pickup_datetime']\n",
      "{'pickup_latitude', 'dropoff_longitude', 'passenger_count', 'dropoff_latitude', 'pickup_longitude'}\n",
      "BEFORE TRANSFORMATION\n",
      "INPUTS: dict_keys(['passenger_count', 'pickup_datetime', 'pickup_latitude', 'pickup_longitude', 'dropoff_latitude', 'dropoff_longitude'])\n",
      "AFTER TRANSFORMATION\n",
      "TRANSFORMED: dict_keys(['hourofday', 'passenger_count', 'euclidean', 'pickup_latitude', 'pickup_longitude', 'dropoff_latitude', 'dropoff_longitude'])\n",
      "FEATURES dict_keys(['hourofday', 'passenger_count', 'euclidean', 'pickup_latitude', 'pickup_longitude', 'dropoff_latitude', 'dropoff_longitude', 'pickup_and_dropoff'])\n",
      "Model: \"model_1\"\n",
      "__________________________________________________________________________________________________\n",
      "Layer (type)                    Output Shape         Param #     Connected to                     \n",
      "==================================================================================================\n",
      "dropoff_latitude (InputLayer)   [(None,)]            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "dropoff_longitude (InputLayer)  [(None,)]            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "pickup_longitude (InputLayer)   [(None,)]            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "pickup_latitude (InputLayer)    [(None,)]            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "pickup_datetime (InputLayer)    [(None,)]            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "scale_dropoff_latitude (Lambda) (None,)              0           dropoff_latitude[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "scale_dropoff_longitude (Lambda (None,)              0           dropoff_longitude[0][0]          \n",
      "__________________________________________________________________________________________________\n",
      "euclidean (Lambda)              (None,)              0           pickup_longitude[0][0]           \n",
      "                                                                 pickup_latitude[0][0]            \n",
      "                                                                 dropoff_longitude[0][0]          \n",
      "                                                                 dropoff_latitude[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "hourofday (Lambda)              (None,)              0           pickup_datetime[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "passenger_count (InputLayer)    [(None,)]            0                                            \n",
      "__________________________________________________________________________________________________\n",
      "scale_pickup_latitude (Lambda)  (None,)              0           pickup_latitude[0][0]            \n",
      "__________________________________________________________________________________________________\n",
      "scale_pickup_longitude (Lambda) (None,)              0           pickup_longitude[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "dense_features_1 (DenseFeatures (None, 130)          1000000     scale_dropoff_latitude[0][0]     \n",
      "                                                                 scale_dropoff_longitude[0][0]    \n",
      "                                                                 euclidean[0][0]                  \n",
      "                                                                 hourofday[0][0]                  \n",
      "                                                                 passenger_count[0][0]            \n",
      "                                                                 scale_pickup_latitude[0][0]      \n",
      "                                                                 scale_pickup_longitude[0][0]     \n",
      "__________________________________________________________________________________________________\n",
      "h1 (Dense)                      (None, 32)           4192        dense_features_1[0][0]           \n",
      "__________________________________________________________________________________________________\n",
      "h2 (Dense)                      (None, 8)            264         h1[0][0]                         \n",
      "__________________________________________________________________________________________________\n",
      "fare (Dense)                    (None, 1)            9           h2[0][0]                         \n",
      "==================================================================================================\n",
      "Total params: 1,004,465\n",
      "Trainable params: 1,004,465\n",
      "Non-trainable params: 0\n",
      "__________________________________________________________________________________________________\n",
      "None\n"
     ]
    }
   ],
   "source": [
    "## Add transformations\n",
    "def euclidean(params):\n",
    "    lon1, lat1, lon2, lat2 = params\n",
    "    londiff = lon2 - lon1\n",
    "    latdiff = lat2 - lat1\n",
    "    return tf.sqrt(londiff*londiff + latdiff*latdiff)\n",
    "\n",
    "DAYS = ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat']\n",
    "def get_dayofweek(s):\n",
    "    ts = parse_datetime(s)\n",
    "    return DAYS[ts.weekday()]\n",
    "\n",
    "@tf.function\n",
    "def dayofweek(ts_in):\n",
    "    return tf.map_fn(\n",
    "        lambda s: tf.py_function(get_dayofweek, inp=[s], Tout=tf.string),\n",
    "        ts_in\n",
    "    )\n",
    "\n",
    "@tf.function\n",
    "def fare_thresh(x):\n",
    "    return 60 * tf.keras.activations.relu(x)\n",
    "\n",
    "def transform(inputs, NUMERIC_COLS, STRING_COLS):\n",
    "    print(\"BEFORE TRANSFORMATION\")\n",
    "    print(\"INPUTS:\", inputs.keys())\n",
    "    \n",
    "    # Pass-through columns\n",
    "    transformed = inputs.copy()\n",
    "    del transformed['pickup_datetime']\n",
    "    \n",
    "    feature_columns = {\n",
    "        colname: tf.feature_column.numeric_column(colname)\n",
    "           for colname in NUMERIC_COLS\n",
    "    }\n",
    "    \n",
    "    # scale the lat, lon values to be in 0, 1\n",
    "    if True:\n",
    "        for lon_col in ['pickup_longitude', 'dropoff_longitude']:  # in range -70 to -78\n",
    "            transformed[lon_col] = tf.keras.layers.Lambda(\n",
    "                lambda x: (x+78)/8.0, \n",
    "                name='scale_{}'.format(lon_col)\n",
    "            )(inputs[lon_col])\n",
    "        for lat_col in ['pickup_latitude', 'dropoff_latitude']: # in range 37 to 45\n",
    "            transformed[lat_col] = tf.keras.layers.Lambda(\n",
    "                lambda x: (x-37)/8.0, \n",
    "                name='scale_{}'.format(lat_col)\n",
    "            )(inputs[lat_col])\n",
    "\n",
    "    # add Euclidean distance. Doesn't have to be accurate calculation because NN will calibrate it\n",
    "    if True:\n",
    "        transformed['euclidean'] = tf.keras.layers.Lambda(euclidean, name='euclidean')([\n",
    "            inputs['pickup_longitude'],\n",
    "            inputs['pickup_latitude'],\n",
    "            inputs['dropoff_longitude'],\n",
    "            inputs['dropoff_latitude']\n",
    "        ])\n",
    "        feature_columns['euclidean'] = tf.feature_column.numeric_column('euclidean')\n",
    "    \n",
    "    # hour of day from timestamp of form '2010-02-08 09:17:00+00:00'\n",
    "    if True:\n",
    "        transformed['hourofday'] = tf.keras.layers.Lambda(\n",
    "            lambda x: tf.strings.to_number(tf.strings.substr(x, 11, 2), out_type=tf.dtypes.int32),\n",
    "            name='hourofday'\n",
    "        )(inputs['pickup_datetime'])\n",
    "        feature_columns['hourofday'] = tf.feature_column.indicator_column(\n",
    "            tf.feature_column.categorical_column_with_identity('hourofday', num_buckets=24))\n",
    "\n",
    "    if False:\n",
    "        # https://buganizer.corp.google.com/issues/137795281\n",
    "        # day of week is hard because there is no TensorFlow function for date handling\n",
    "        transformed['dayofweek'] = tf.keras.layers.Lambda(\n",
    "            lambda x: dayofweek(x),\n",
    "            name='dayofweek_pyfun'\n",
    "        )(inputs['pickup_datetime'])\n",
    "        transformed['dayofweek'] = tf.keras.layers.Reshape((), name='dayofweek')(transformed['dayofweek'])\n",
    "        feature_columns['dayofweek'] = tf.feature_column.indicator_column(\n",
    "            tf.feature_column.categorical_column_with_vocabulary_list(\n",
    "              'dayofweek', vocabulary_list = DAYS))\n",
    "    \n",
    "    if True:\n",
    "        # https://buganizer.corp.google.com/issues/135479527\n",
    "        # featurecross lat, lon into nxn buckets, then embed\n",
    "        nbuckets = NBUCKETS\n",
    "        latbuckets = np.linspace(0, 1, nbuckets).tolist()\n",
    "        lonbuckets = np.linspace(0, 1, nbuckets).tolist()\n",
    "        b_plat = tf.feature_column.bucketized_column(feature_columns['pickup_latitude'], latbuckets)\n",
    "        b_dlat = tf.feature_column.bucketized_column(feature_columns['dropoff_latitude'], latbuckets)\n",
    "        b_plon = tf.feature_column.bucketized_column(feature_columns['pickup_longitude'], lonbuckets)\n",
    "        b_dlon = tf.feature_column.bucketized_column(feature_columns['dropoff_longitude'], lonbuckets)\n",
    "        ploc = tf.feature_column.crossed_column([b_plat, b_plon], nbuckets * nbuckets)\n",
    "        dloc = tf.feature_column.crossed_column([b_dlat, b_dlon], nbuckets * nbuckets)\n",
    "        pd_pair = tf.feature_column.crossed_column([ploc, dloc], nbuckets ** 4 )\n",
    "        feature_columns['pickup_and_dropoff'] = tf.feature_column.embedding_column(pd_pair, 100)\n",
    "\n",
    "    print(\"AFTER TRANSFORMATION\")\n",
    "    print(\"TRANSFORMED:\", transformed.keys())\n",
    "    print(\"FEATURES\", feature_columns.keys())   \n",
    "    return transformed, feature_columns\n",
    "\n",
    "def rmse(y_true, y_pred):\n",
    "    return tf.sqrt(tf.reduce_mean(tf.square(y_pred - y_true))) \n",
    "\n",
    "def build_dnn_model():\n",
    "    # input layer is all float except for pickup_datetime which is a string\n",
    "    STRING_COLS = ['pickup_datetime']\n",
    "    NUMERIC_COLS = set(CSV_COLUMNS) - set([LABEL_COLUMN, 'key']) - set(STRING_COLS)\n",
    "    print(STRING_COLS)\n",
    "    print(NUMERIC_COLS)\n",
    "    inputs = {\n",
    "        colname : tf.keras.layers.Input(name=colname, shape=(), dtype='float32')\n",
    "           for colname in NUMERIC_COLS\n",
    "    }\n",
    "    inputs.update({\n",
    "        colname : tf.keras.layers.Input(name=colname, shape=(), dtype='string')\n",
    "           for colname in STRING_COLS\n",
    "    })\n",
    "    \n",
    "    # transforms\n",
    "    transformed, feature_columns = transform(inputs, NUMERIC_COLS, STRING_COLS)\n",
    "    dnn_inputs = tf.keras.layers.DenseFeatures(feature_columns.values())(transformed)\n",
    "\n",
    "    # two hidden layers of [32, 8] just in like the BQML DNN\n",
    "    h1 = tf.keras.layers.Dense(32, activation='relu', name='h1')(dnn_inputs)\n",
    "    h2 = tf.keras.layers.Dense(8, activation='relu', name='h2')(h1)\n",
    "\n",
    "    if False:\n",
    "        # https://buganizer.corp.google.com/issues/136476088\n",
    "        # final output would normally have a linear activation because this is regression\n",
    "        # However, we know something about the taxi problem (fares are +ve and tend to be below $60).\n",
    "        # Use that here. (You can verify by running this query):\n",
    "        # SELECT APPROX_QUANTILES(fare_amount, 100) FROM serverlessml.cleaned_training_data\n",
    "        output = tf.keras.layers.Dense(1, activation=fare_thresh, name='fare')(h2)\n",
    "    else:\n",
    "        output = tf.keras.layers.Dense(1, name='fare')(h2)\n",
    "    \n",
    "    model = tf.keras.models.Model(inputs, output)\n",
    "    model.compile(optimizer='adam', loss='mse', metrics=[rmse, 'mse'])\n",
    "    return model\n",
    "\n",
    "model = build_dnn_model()\n",
    "print(model.summary())"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize the DNN model layers"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "tags": [
     "display"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAABScAAAH0CAYAAADPKZhCAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOzdeVhV1f4/8PdhUCaZzAlnZsW5wiFNKWkSzK4XzCHKnE2kcIyw1AKHVBzganrzOuGAWk44YE4pQqIZISCaCOKQ5gQCKnD4/P7wx/mKghwQ2CDv1/Oc54nV3mu/91qbU37ce22ViAiIiIiIiIiIiIiIKtdmHaUTEBERERERERERUc3E4iQREREREREREREpgsVJIiIiIiIiIiIiUgSLk0RERERERERERKQIPaUDEBGVlq+vLy5fvqx0DCKqZE2aNMGCBQuUjkFEREREROVIxbd1E1F1o1Kp0KVLFzRt2lTpKERUSdLS0hAdHQ3+bwsRERER0QtlM++cJKJq6YsvvoCnp6fSMYiokoSFhWHAgAFKxyAiIiIionLGNSeJiIiIiIiIiIhIESxOEhERERERERERkSJYnCQiIiIiIiIiIiJFsDhJREREREREREREimBxkoiIiIiIiIiIiBTB4iQREREREREREREpQq80G6ekpCAmJqaishBRGTRs2BA9evRQOgYRERERERERUamVqjj55ZdfYuPGjRWVhYjKQE9PD7m5uUrHICIiIiIiIiIqtVIVJ9VqNTw8PBAWFlZReYioFMLCwjBgwAClYxARERERERERlQnXnCQiIiIiIiIiIiJFsDhJREREREREREREimBxkoiIiIiIiIiIiBTB4iQREREREREREREpgsVJIiIiIiIiIiIiUgSLk0REz+H69esICwtDQEBApRzv7t27lXIcJVX2mD6PF30+0tPTy7Tfiz4uRERERERUflicJCIqo8TERMycORMDBgzA2rVrK+w4Dx48QEBAALp27Yq6detW2HHKSkSwePFiTJkyBS4uLujRoweSkpKKbX+W8h7Tzp07Y9KkSc/dz+Mqcj4OHToEDw8PqFQqqFQqjBo1CpGRkeV6jJLk5eVh9uzZ6N69e6nOr6pfp0REREREVDWxOElEVEatWrXC/PnzK/w4BgYG8PX1RVJSEvLz8yv8eKW1ePFi+Pn5ISAgAD///DPq1auH9PT0Ytuf5XnGNC0t7am2li1bwsDAoMTtSqMi58PFxQWrV68GADRr1gw//PADXnvttXI9Rkn09PTg4+ODhIQEqNVqrfer6tcpERER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3j18+OGH+OSTTzBy5Ejs2bMHVlZWasciIiIiIip3+Fg3ERERUQmcOHECHh4eSElJwbZt29CtWze1IxERERERlVu8c5KIiIhIR9rHuG1sbHD69Gk2JomIiIiInhGbk0RERETF0I7GPXjwYIwfPx67du1C/fr11Y5FRERERFTu8bFuIiIioiIcPXoU/fr1w/3797F792506tRJ7UhERERERBUG75wkIiIiKkBubi6mTZuGN998E02bNsWpU6fYmCQiIiIi0jPeOUlERET0mNjYWAwcOBBHjhzB1KlTMW7cOBgY8N90iYiIiIj0TSMionYIIqKiVKpUCTk5OWrHIKIyxsjICNnZ2Xpf75o1azB06FA0aNAAoaGhaNOmjd63QUREREREAIA1vHOSiMq8vXv34tatW2rHIKIypl69enpd3507d+Dt7Y3169fDx8cH06ZNQ+XKlfW6DSIiIiIiyo93ThIREdELb+vWrfj0009haGiIZcuWoXPnzmpHIiIiIiJ6Eazhy5OIiIjohZWcnAxvb2/06NEDb775Jk6dOsXGJBERERHRc8THuomIiOiFtG3bNgwdOhQ5OTlYv3493nvvPbUjERERERG9cHjnJBEREb1QkpOT8cknn+Ddd99Fp06dcO7cOTYmiYiIiIhUwjsniYiI6IWxadMmfPbZZ8jKysK6devQp08ftSMREREREb3QeOckERERVXi3bt2Cu7s7evXqhfbt2+Off/5hY5KIiIiIqAzgnZNERERUYYkIVqxYgTFjxqB69erYsWMHunbtqnYsIiIiIiL6/3jnJBEREVVIFy9eRKdOneDl5QUvLy/8/fffbEwSEREREZUxbE4SERFRhZKRkYGAgAC88soruHfvHv766y98++23MDMzUzsaERERERE9ho91ExERUYWxadMmjB49GgkJCZgyZQp8fX1hZMRfd4iIiIiIyireOUlERETl3vXr1zFgwAD06tULDg4OOH/+PCZMmMDGJBERERFRGcfmJBEREZVb9+/fx7Rp09C8eXMcPXoUe/bswaZNm2BjY6N2NCIiIiIi0gFvJyAiIqJyR0SwcuVK+Pv7IykpCQEBAfD19YWxsbHa0YiIiIiIqAR45yQRERGVK3/99Rc6duyIgQMHolOnToiKisLEiRPZmCQiIiIiKofYnCQiIqJyISoqCh988AHeeOMNVKlSBSdPnsTy5ctRv359taMREREREdFTYnOSiIiIyrTLly9j0KBBcHBwwIULF7Blyxbs3LkTr7zyitrRiIiIiIjoGbE5SURERGXS1atXMXr0aLRs2RL79+/HggULcPr0abz77rtqRyMiIiIiIj3hgDhERERUpty4cQMzZ87EokWLUK9ePSxYsAADBw6EkRF/bSEiIiIiqmj4Wz4RERGVCTExMfj++++xePFi1KxZE0FBQfD29oaJiYna0YiIiIiIqJSwOUlERESqOnnyJObOnYtVq1bB1tYWM2bMwNChQ2Fqaqp2NCIiIiIiKmV85yQRERE9dyKC7du34+2338arr76K8+fPY/Xq1YiOjsbo0aPZmCQiIiIiekGwOUlERETPzb179xASEoKWLVuie/fuMDIywu7du3H06FH07dsXBgb81YSIiIiI6EXCx7qJiIio1F26dAmLFy/GokWLkJGRAXd3d4SHh+OVV15ROxoREREREalIp+bkmjVrsGbNmtLOQkTPwNraGnPmzFE7BhXAx8cH165dUzsG0RNK+7qRk5ODLVu24Mcff8SOHTtga2uLiRMnYsiQIbCwsCi17RIRERERUfmhEREpbiZ3d3ccOnQI7du3fx6ZiKiErl69isOHD0OHrzOpQKPR4I033oCNjY3aUYgUpXnd+Pfff7FkyRIsXboU8fHx+O9//4vPPvsMPXv2hKGhod63R0RERERE5dYanR/rbt++PcLDw0szDBE9pfDwcHh4eKgdg4owZswYuLu7qx2DSKHv60ZmZiZ+++03/PTTT9i/fz+srKzg5eWFwYMHo3HjxnrbDhERERERVSx85yQRERE9tePHj2P58uVYtWoV7t69i7fffhthYWF4//33YWTEXzOIiIiIiKho/FsDERERlcj58+cRGhqKlStXIi4uDm3atIGfnx/69++P+vXrqx2PiIiIiIjKETYniYiIqFiXL1/G2rVrERYWhuPHj8PGxgb9+/eHp6cnWrVqpXY8IiIiIiIqp9icJCIiogJdvnwZa9aswZo1a3Ds2DHUrFkTvXv3xnfffQdnZ2cYGBioHZGIiIiIiMo5NieJiIhIcf78eWzYsAHr1q3L15CcNm0a/vvf//I9kkREREREpFf8GwYREdELLDc3FwcPHsTGjRuxYcMGREdHo3bt2ujVqxcbkkREREREVOr4tw0iIqIXWP369XH7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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "tf.keras.utils.plot_model(model, 'dnn_model.png', show_shapes=False, rankdir='LR')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Train the model\n",
    "\n",
    "To train the model, call [model.fit()](https://keras.io/models/model/#fit)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Repeating training dataset indefinitely\n",
      "Epoch 1/5\n",
      "\n",
      "Epoch 00001: saving model to ./trained_model/checkpoints/taxi\n",
      "312/312 - 9s - loss: 129.7867 - rmse: 10.6177 - mse: 129.7867 - val_loss: 94.7556 - val_rmse: 9.7343 - val_mse: 94.7556\n",
      "Epoch 2/5\n",
      "\n",
      "Epoch 00002: saving model to ./trained_model/checkpoints/taxi\n",
      "312/312 - 6s - loss: 87.8260 - rmse: 8.7146 - mse: 87.8260 - val_loss: 93.9188 - val_rmse: 9.6912 - val_mse: 93.9188\n",
      "Epoch 3/5\n",
      "\n",
      "Epoch 00003: saving model to ./trained_model/checkpoints/taxi\n",
      "312/312 - 6s - loss: 97.5786 - rmse: 9.3268 - mse: 97.5786 - val_loss: 93.7642 - val_rmse: 9.6832 - val_mse: 93.7642\n",
      "Epoch 4/5\n",
      "\n",
      "Epoch 00004: saving model to ./trained_model/checkpoints/taxi\n",
      "312/312 - 6s - loss: 87.7876 - rmse: 8.8474 - mse: 87.7876 - val_loss: 93.9761 - val_rmse: 9.6941 - val_mse: 93.9761\n",
      "Epoch 5/5\n",
      "\n",
      "Epoch 00005: saving model to ./trained_model/checkpoints/taxi\n",
      "312/312 - 6s - loss: 96.3224 - rmse: 9.0700 - mse: 96.3224 - val_loss: 90.7936 - val_rmse: 9.5286 - val_mse: 90.7936\n"
     ]
    }
   ],
   "source": [
    "trainds = load_dataset('taxi-train*', TRAIN_BATCH_SIZE, tf.estimator.ModeKeys.TRAIN)\n",
    "evalds = load_dataset('taxi-valid*', 1000, tf.estimator.ModeKeys.EVAL).take(NUM_EVAL_EXAMPLES//10000) # evaluate on 1/10 final evaluation set\n",
    "\n",
    "steps_per_epoch = NUM_TRAIN_EXAMPLES // (TRAIN_BATCH_SIZE * NUM_EVALS)\n",
    "\n",
    "shutil.rmtree('{}/checkpoints/'.format(OUTDIR), ignore_errors=True)\n",
    "checkpoint_path = '{}/checkpoints/taxi'.format(OUTDIR)\n",
    "cp_callback = tf.keras.callbacks.ModelCheckpoint(checkpoint_path, \n",
    "                                                 save_weights_only=True,\n",
    "                                                 verbose=1)\n",
    "\n",
    "history = model.fit(trainds, \n",
    "                    validation_data=evalds,\n",
    "                    epochs=NUM_EVALS, \n",
    "                    steps_per_epoch=steps_per_epoch,\n",
    "                    verbose=2, # 0=silent, 1=progress bar, 2=one line per epoch\n",
    "                    callbacks=[cp_callback])"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Visualize the Model Loss Curves"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {
    "tags": [
     "display"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x360 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# plot\n",
    "import matplotlib.pyplot as plt\n",
    "nrows = 1\n",
    "ncols = 2\n",
    "fig = plt.figure(figsize=(10, 5))\n",
    "\n",
    "for idx, key in enumerate(['loss', 'rmse']):\n",
    "    ax = fig.add_subplot(nrows, ncols, idx+1)\n",
    "    plt.plot(history.history[key])\n",
    "    plt.plot(history.history['val_{}'.format(key)])\n",
    "    plt.title('model {}'.format(key))\n",
    "    plt.ylabel(key)\n",
    "    plt.xlabel('epoch')\n",
    "    plt.legend(['train', 'validation'], loc='upper left');"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Evaluate over the full validation dataset\n",
    "\n",
    "Let's evaluate over the full validation dataset (provided the validation dataset is large enough)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10/10 [==============================] - 0s 30ms/step - loss: 105.7488 - rmse: 10.2386 - mse: 105.7488\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "[105.74877853393555, 10.238601, 105.74877]"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "evalds = load_dataset('taxi-valid*', 1000, tf.estimator.ModeKeys.EVAL).take(NUM_EVAL_EXAMPLES//1000)\n",
    "model.evaluate(evalds)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Although we get RMSE of around 10 (your answer will be different due to random seeds), remember that we trained on a really small subset of the data. We need a larger training dataset before making decisions about this model."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Predict with the new model\n",
    "\n",
    "This is how to predict with this model:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "tags": [
     "display"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[10.7212]], dtype=float32)"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "model.predict({\n",
    "    'pickup_longitude': tf.convert_to_tensor([-73.982683]),\n",
    "    'pickup_latitude': tf.convert_to_tensor([40.742104]),\n",
    "    'dropoff_longitude': tf.convert_to_tensor([-73.983766]),\n",
    "    'dropoff_latitude': tf.convert_to_tensor([40.755174]),\n",
    "    'passenger_count': tf.convert_to_tensor([3.0]),\n",
    "    'pickup_datetime': tf.convert_to_tensor(['2010-02-08 09:17:00 UTC'], dtype=tf.string),\n",
    "}, steps=1)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "However, this is not realistic, because we can't expect client code to have a model object in memory. We'll have to export our model to a file, and expect client code to instantiate the model from that exported file."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Export the model for serving later\n",
    "\n",
    "Let's export the model to a TensorFlow SavedModel format. Once we have a model in this format, we have lots of ways to \"serve\" the model, from a web application, from JavaScript, from mobile applications, etc."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "import shutil, os, datetime\n",
    "OUTPUT_DIR = os.path.join(OUTDIR, 'export/savedmodel')\n",
    "if OUTPUT_DIR[:5] != 'gs://':\n",
    "    shutil.rmtree(OUTPUT_DIR, ignore_errors=True)\n",
    "EXPORT_PATH = os.path.join(OUTPUT_DIR, datetime.datetime.now().strftime('%Y%m%d%H%M%S'))\n",
    "tf.saved_model.save(model, EXPORT_PATH) # with default serving function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The given SavedModel SignatureDef contains the following input(s):\n",
      "  inputs['dropoff_latitude'] tensor_info:\n",
      "      dtype: DT_FLOAT\n",
      "      shape: (-1)\n",
      "      name: serving_default_dropoff_latitude:0\n",
      "  inputs['dropoff_longitude'] tensor_info:\n",
      "      dtype: DT_FLOAT\n",
      "      shape: (-1)\n",
      "      name: serving_default_dropoff_longitude:0\n",
      "  inputs['passenger_count'] tensor_info:\n",
      "      dtype: DT_FLOAT\n",
      "      shape: (-1)\n",
      "      name: serving_default_passenger_count:0\n",
      "  inputs['pickup_datetime'] tensor_info:\n",
      "      dtype: DT_STRING\n",
      "      shape: (-1)\n",
      "      name: serving_default_pickup_datetime:0\n",
      "  inputs['pickup_latitude'] tensor_info:\n",
      "      dtype: DT_FLOAT\n",
      "      shape: (-1)\n",
      "      name: serving_default_pickup_latitude:0\n",
      "  inputs['pickup_longitude'] tensor_info:\n",
      "      dtype: DT_FLOAT\n",
      "      shape: (-1)\n",
      "      name: serving_default_pickup_longitude:0\n",
      "The given SavedModel SignatureDef contains the following output(s):\n",
      "  outputs['fare'] tensor_info:\n",
      "      dtype: DT_FLOAT\n",
      "      shape: (-1, 1)\n",
      "      name: StatefulPartitionedCall:0\n",
      "Method name is: tensorflow/serving/predict\n"
     ]
    }
   ],
   "source": [
    "!saved_model_cli show --tag_set serve --signature_def serving_default --dir {EXPORT_PATH}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "./trained_model/export/savedmodel/20190923023536\n",
      "./trained_model/export/savedmodel/20190923023536/saved_model.pb\n",
      "./trained_model/export/savedmodel/20190923023536/variables\n",
      "./trained_model/export/savedmodel/20190923023536/variables/variables.index\n",
      "./trained_model/export/savedmodel/20190923023536/variables/variables.data-00000-of-00001\n",
      "./trained_model/export/savedmodel/20190923023536/assets\n"
     ]
    }
   ],
   "source": [
    "!find {EXPORT_PATH}\n",
    "os.environ['EXPORT_PATH'] = EXPORT_PATH"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Serve the model on Cloud AI Platform"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 38,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "taxifare already exists\n",
      "Deleting already existing taxifare:v2 ... \n",
      "Please run this cell again if you don't see a Creating message ... \n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "This will delete version [v2]...\n",
      "\n",
      "Do you want to continue (Y/n)?  \n",
      "Deleting version [v2]......\n",
      "..................................................................................done.\n"
     ]
    }
   ],
   "source": [
    "%%bash\n",
    "PROJECT=${PROJECT}\n",
    "BUCKET=${PROJECT}-ml\n",
    "REGION=us-east1\n",
    "MODEL_NAME=taxifare\n",
    "VERSION_NAME=v2\n",
    "\n",
    "if [[ $(gcloud ai-platform models list --format='value(name)' | grep $MODEL_NAME) ]]; then\n",
    "    echo \"$MODEL_NAME already exists\"\n",
    "else\n",
    "    # create model\n",
    "    echo \"Creating $MODEL_NAME\"\n",
    "    gcloud ai-platform models create --regions=$REGION $MODEL_NAME\n",
    "fi\n",
    "\n",
    "if [[ $(gcloud ai-platform versions list --model $MODEL_NAME --format='value(name)' | grep $VERSION_NAME) ]]; then\n",
    "    echo \"Deleting already existing $MODEL_NAME:$VERSION_NAME ... \"\n",
    "    gcloud ai-platform versions delete --model=$MODEL_NAME $VERSION_NAME\n",
    "    echo \"Please run this cell again if you don't see a Creating message ... \"\n",
    "    sleep 10\n",
    "fi\n",
    "\n",
    "# create model\n",
    "echo \"Creating $MODEL_NAME:$VERSION_NAME\"\n",
    "gcloud ai-platform versions create --model=$MODEL_NAME $VERSION_NAME --async \\\n",
    "       --framework=tensorflow --python-version=3.7 --runtime-version=1.15 \\\n",
    "       --origin=$EXPORT_PATH --staging-bucket=gs://$BUCKET"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "In this notebook, we have looked at how to implement a custom Keras model using feature columns."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Make predictions using `gcloud ai-platform predict`"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Writing repro.json\n"
     ]
    }
   ],
   "source": [
    "%%writefile repro.json\n",
    "{\"pickup_longitude\": -73.982683, \"pickup_latitude\": 40.742104, \"dropoff_longitude\": -73.983766, \"dropoff_latitude\": 40.755174, \"passenger_count\": 3.0, \"pickup_datetime\": \"2010-02-08 09:17:00 UTC\"}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "FARE\n",
      "[10.721199989318848]\n"
     ]
    }
   ],
   "source": [
    "!gcloud ai-platform predict --model taxifare --json-instances repro.json --version v2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Copyright 2019 Google Inc.\n",
    "Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except in compliance with the License. You may obtain a copy of the License at\n",
    "http://www.apache.org/licenses/LICENSE-2.0\n",
    "Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License."
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
